package com.atguigu.chaptar1

object Test5 {
  /*
  5、根据指定规则对数组所有元素聚合
	Array(10,4,6,10,2)
	规则: 求和/求乘积
	结果: 32
   */
  //1.定义高阶函数,参数1为集合,函数考虑到求和求乘积等操作需要两个参数,结果也是返回整数
  def group(arr:Array[Int],func:(Int,Int)=>Int)={
    var tmp =arr(0)
    //2.遍历除0外的其他角标
    for(i<- 1 until arr.length){
      //3.调用函数规则:* + - /由外界定义
      tmp = func(tmp,arr(i))
    }
    //4.返回方法结果
    tmp
  }
  def main(args: Array[String]): Unit = {
    val arr =  Array(10,4,6,10,2)
    //5.定义函数规则
    val func = (x:Int,y:Int)=>{x*y}
    //6.函数传入方法
    println(group(arr, func))
    //7.函数值传递的终极简化
    println(group(arr, _ * _))
  }
}
